import Vue from 'vue'
import VueRouter from 'vue-router'
//import navData from '@/utils/navData'
import { getNavdata } from '@/utils/http'
import { getBtnPerm } from '@/utils/http'
//import { getNavdata2 } from '@/utils/http'//用于处理权限管理，返回的数据不同，展示不同
import store from '@/store'   //减少请求，缓存数据
Vue.use(VueRouter)

// let routes = [];
const routes = [
  {
    path: '/',
    redirect:'/home'
  },
];
//根据数据动态生成路由
// navData.forEach(item => {
//   routes.push({
//     path: item.path,
//     name: item.name,
//     meta: { title: item.title },
//     component: () => import( '../views/rightMain/content/'+item.component)
//   },)
// })

// const router = new VueRouter({
//   linkActiveClass:'selected',
//   routes
// })

// export default router
const router = new VueRouter({
  linkActiveClass:'selected',
  routes
})

// //路由拦截   /*在跳转之前执行*/
// // beforeEach函数有三个参数：
// // to:router即将进入的路由对象
// // from:当前导航即将离开的路由
// // next:Function,进行管道中的一个钩子，如果执行完了，则导航的状态就是 confirmed （确认的）；否则为false，终止导航。
// // afterEach函数不用传next()函数
// //路由拦截
router.beforeEach((to, from, next)=>{
  addRoutesData()
  next()
})

function addRoutesData() {
  if(store && store.state.nav.length==0){
    //根据数据动态生成路由
    getNavdata().then(res=>{
      getBtnPerm().then()
      // 添加动态路由
      let dynamicRoutes = addDynamicRoutes(res.data);
      // 保存加载状态
      //store.commit('setNav', res.data.result);//直接通过commit来操作state
      store.dispatch('SETNAV',res.data); //通过dispatch来操作actions
      router.addRoutes(dynamicRoutes); 
    })
  }
}
//路由数据拼接
function addDynamicRoutes(result) {
  result.forEach(item => {
    routes.push({
      path: item.path,
      name: item.name,
      meta: { title: item.title },
      component: () => import( '../views/rightMain/content/'+item.component)
    },)
  })
  return routes;
}

export default router

